๋ค์ํ ํ๋ซํผ๊ณผ ๊ธฐ๊ธฐ์์ ์ค์๊ฐ ๊ทธ๋ํฝ์ค ์ฑ๋ฅ์ ์ต์ ํํ๋ ๊ณ ๊ธ ๊ธฐ์ ์ ํ์ํฉ๋๋ค. ๋ ๋๋ง ํ์ดํ๋ผ์ธ, ํ๋กํ์ผ๋ง ๋๊ตฌ, ํ๋ซํผ๋ณ ์ต์ ํ์ ๋ํด ์์๋ณด์ธ์.
์ค์๊ฐ ๊ทธ๋ํฝ์ค: ์ฑ๋ฅ ์ต์ ํ ์ฌ์ธต ๋ถ์
์ค์๊ฐ ๊ทธ๋ํฝ์ค๋ ๋น๋์ค ๊ฒ์๊ณผ ์๋ฎฌ๋ ์ด์ ๋ถํฐ ์ฆ๊ฐ ํ์ค(AR) ๋ฐ ๊ฐ์ ํ์ค(VR) ๊ฒฝํ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ชจ๋ ๊ฒ์ ๋๋ ฅ์ ์ ๊ณตํ๋ฉฐ ์ด๋์๋ ์กด์ฌํฉ๋๋ค. ์ค์๊ฐ ๊ทธ๋ํฝ์ค์์ ๋์ ์ฑ๋ฅ์ ๋ฌ์ฑํ๋ ๊ฒ์ ๋ถ๋๋ฝ๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋๋ฉฐ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ณตํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด ๊ธ์์๋ ๊ฐ๋ฐ์ ๋ฐ ๊ทธ๋ํฝ์ค ์ ํธ๊ฐ๋ผ๋ ์ ์ธ๊ณ ๋ ์์ธต์ ๋์์ผ๋ก ๋ค์ํ ํ๋ซํผ๊ณผ ๊ธฐ๊ธฐ์์ ์ค์๊ฐ ๊ทธ๋ํฝ์ค ์ฑ๋ฅ์ ์ต์ ํํ๊ธฐ ์ํ ๋ค์ํ ๊ธฐ์ ์ ํ์ํฉ๋๋ค.
๋ ๋๋ง ํ์ดํ๋ผ์ธ ์ดํดํ๊ธฐ
๋ ๋๋ง ํ์ดํ๋ผ์ธ์ 3D ์ฅ๋ฉด ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ํ์๋๋ 2D ์ด๋ฏธ์ง๋ก ๋ณํํ๋ ์ผ๋ จ์ ๋จ๊ณ์ ๋๋ค. ์ด ํ์ดํ๋ผ์ธ์ ์ดํดํ๋ ๊ฒ์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ํจ๊ณผ์ ์ธ ์ต์ ํ ์ ๋ต์ ์ ์ฉํ๋ ๋ฐ ๊ธฐ๋ณธ์ด ๋ฉ๋๋ค. ํ์ดํ๋ผ์ธ์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:
- ์ ์ ์ฒ๋ฆฌ(Vertex Processing): 3D ๋ชจ๋ธ์ ์ ์ ์ ๋ณํํ๊ณ ์ฒ๋ฆฌํฉ๋๋ค. ์ด ๋จ๊ณ์์๋ ๋ชจ๋ธ, ๋ทฐ, ํฌ์ ํ๋ ฌ์ ์ ์ฉํ์ฌ ์ฅ๋ฉด์ ๊ฐ์ฒด ์์น๋ฅผ ์ง์ ํ๊ณ ํ๋ฉด์ ํฌ์ํฉ๋๋ค.
- ๋์คํฐํ(Rasterization): ์ฒ๋ฆฌ๋ ์ ์ ์ 3D ๋ชจ๋ธ์ ๋ณด์ด๋ ํ๋ฉด์ ๋ํ๋ด๋ ํ๋๊ทธ๋จผํธ(ํฝ์ )๋ก ๋ณํํฉ๋๋ค.
- ํ๋๊ทธ๋จผํธ ์ฒ๋ฆฌ(Fragment Processing): ๊ฐ ํ๋๊ทธ๋จผํธ์ ์์ ๋ฐ ๊ธฐํ ์์ฑ์ ๊ฒฐ์ ํฉ๋๋ค. ์ด ๋จ๊ณ์์๋ ํ ์ค์ฒ, ์กฐ๋ช , ์ ฐ์ด๋ฉ ํจ๊ณผ๋ฅผ ์ ์ฉํ์ฌ ์ต์ข ์ด๋ฏธ์ง๋ฅผ ๋ง๋ญ๋๋ค.
- ์ถ๋ ฅ ๋ณํฉ(Output Merging): ํ๋๊ทธ๋จผํธ๋ฅผ ๊ธฐ์กด ํ๋ ์๋ฒํผ ์ฝํ ์ธ ์ ๊ฒฐํฉํ์ฌ ํ๋ฉด์ ํ์๋ ์ต์ข ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค.
๋ ๋๋ง ํ์ดํ๋ผ์ธ์ ๊ฐ ๋จ๊ณ๋ ์ ์ฌ์ ์ธ ๋ณ๋ชฉ ํ์์ด ๋ ์ ์์ต๋๋ค. ์ด๋ค ๋จ๊ณ๊ฐ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋์ง ์๋ณํ๋ ๊ฒ์ด ์ต์ ํ์ ์ฒซ๊ฑธ์์ ๋๋ค.
ํ๋กํ์ผ๋ง ๋๊ตฌ: ๋ณ๋ชฉ ํ์ ์๋ณํ๊ธฐ
ํ๋กํ์ผ๋ง ๋๊ตฌ๋ ์ค์๊ฐ ๊ทธ๋ํฝ์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ CPU ๋ฐ GPU ์ฌ์ฉ๋ฅ , ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋, ๋ ๋๋ง ํ์ดํ๋ผ์ธ์ ์ฌ๋ฌ ๋ถ๋ถ์ ๋ํ ์คํ ์๊ฐ์ ๋ํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ํ๋กํ์ผ๋ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค:
- GPU ํ๋กํ์ผ๋ฌ: NVIDIA Nsight Graphics, AMD Radeon GPU Profiler, Intel Graphics Frame Analyzer์ ๊ฐ์ ๋๊ตฌ๋ ์ ฐ์ด๋ ์คํ ์๊ฐ, ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ ์ฌ์ฉ๋, ๋๋ก์ฐ ์ฝ ์ค๋ฒํค๋ ๋ฑ GPU ์ฑ๋ฅ์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- CPU ํ๋กํ์ผ๋ฌ: Intel VTune Amplifier ๋ฐ perf(on Linux)์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ๋ํฝ์ค ์ ํ๋ฆฌ์ผ์ด์ ์ CPU ์ฑ๋ฅ์ ํ๋กํ์ผ๋งํ๊ณ , ํซ์คํ ๋ฐ ์ต์ ํ ์์ญ์ ์๋ณํ ์ ์์ต๋๋ค.
- ์ธ๊ฒ์ ํ๋กํ์ผ๋ฌ: Unity ๋ฐ Unreal Engine๊ณผ ๊ฐ์ ๋ง์ ๊ฒ์ ์์ง์ ๊ฐ๋ฐ์๊ฐ ์ค์๊ฐ์ผ๋ก ์ฑ๋ฅ ์งํ๋ฅผ ๋ชจ๋ํฐ๋งํ ์ ์๋ ๋ด์ฅ ํ๋กํ์ผ๋ง ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ด๋ฌํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์๋ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ์ฝ๋๋ ์ฅ๋ฉด์ ํน์ ์์ญ์ ์ ํํ ์ฐพ์๋ด๊ณ ์ต์ ํ ๋ ธ๋ ฅ์ ์ง์คํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ๋๊ทธ๋จผํธ ์ ฐ์ด๋ ์คํ ์๊ฐ์ด ๊ธธ๋ฉด ์ ฐ์ด๋ ์ต์ ํ๊ฐ ํ์ํจ์ ๋ํ๋ผ ์ ์์ผ๋ฉฐ, ๋๋ก์ฐ ์ฝ ์๊ฐ ๋ง์ผ๋ฉด ๋๋ก์ฐ ์ฝ ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ธฐ ์ํด ์ธ์คํด์ฑ์ด๋ ๋ค๋ฅธ ๊ธฐ์ ์ ์ฌ์ฉํด์ผ ํจ์ ์์ฌํ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ธ ์ต์ ํ ๊ธฐ๋ฒ
ํน์ ํ๋ซํผ์ด๋ ๋ ๋๋ง API์ ๊ด๊ณ์์ด ์ค์๊ฐ ๊ทธ๋ํฝ์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ์ ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ์ต์ ํ ๊ธฐ๋ฒ์ด ์์ต๋๋ค.
LOD(Level of Detail)
LOD(Level of Detail)๋ ์นด๋ฉ๋ผ์์ ๊ฑฐ๋ฆฌ์ ๋ฐ๋ผ ๋ค์ํ ๋ํ ์ผ ์์ค์ ๊ฐ์ง 3D ๋ชจ๋ธ์ ์ฌ๋ฌ ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ธฐ๋ฒ์ ๋๋ค. ๊ฐ์ฒด๊ฐ ๋ฉ๋ฆฌ ์์ ๋๋ ๋ ๋ฎ์ ๋ํ ์ผ์ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํด์ผ ํ ์ ์ ๊ณผ ์ผ๊ฐํ์ ์๋ฅผ ์ค์ ๋๋ค. ๊ฐ์ฒด๊ฐ ๊ฐ๊น์์ง๋ฉด ์๊ฐ์ ํ์ง์ ์ ์งํ๊ธฐ ์ํด ๋ ๋์ ๋ํ ์ผ์ ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค.
LOD๋ ํนํ ๋ง์ ๊ฐ์ฒด๊ฐ ์๋ ์ฅ๋ฉด์์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๋ง์ ๊ฒ์ ์์ง์ด LOD๋ฅผ ๋ด์ฅ ์ง์ํ๋ฏ๋ก ์ฝ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.
์์: ๋ ์ด์ฑ ๊ฒ์์์ ๋ฉ๋ฆฌ ์๋ ์๋์ฐจ๋ ๋จ์ํ๋ ๋ชจ๋ธ๋ก ๋ ๋๋ง๋๋ ๋ฐ๋ฉด, ํ๋ ์ด์ด์ ์๋์ฐจ๋ ๋งค์ฐ ์์ธํ ๋ชจ๋ธ๋ก ๋ ๋๋ง๋ ์ ์์ต๋๋ค.
์ปฌ๋ง(Culling)
์ปฌ๋ง์ ์นด๋ฉ๋ผ์ ๋ณด์ด์ง ์๋ ๊ฐ์ฒด๋ ๊ฐ์ฒด์ ์ผ๋ถ๋ฅผ ๋ฒ๋ฆฌ๋ ๊ณผ์ ์ ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ์ปฌ๋ง ๊ธฐ๋ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค:
- ์ ๋์ฒด ์ปฌ๋ง(Frustum Culling): ์นด๋ฉ๋ผ์ ๋ทฐ ์ ๋์ฒด(์นด๋ฉ๋ผ์ ๋ณด์ด๋ 3D ์์ญ) ์ธ๋ถ์ ์๋ ๊ฐ์ฒด๋ฅผ ๋ฒ๋ฆฝ๋๋ค.
- ๊ฐ๋ ค์ง ์ปฌ๋ง(Occlusion Culling): ๋ค๋ฅธ ๊ฐ์ฒด ๋ค์ ์จ๊ฒจ์ง ๊ฐ์ฒด๋ฅผ ๋ฒ๋ฆฝ๋๋ค. ์ด๋ ์ ๋์ฒด ์ปฌ๋ง๋ณด๋ค ๋ ๋ณต์กํ ๊ธฐ๋ฒ์ด์ง๋ง, ๊ฐ๋ ค์ง ์์ค์ด ๋์ ์ฅ๋ฉด์์ ์๋นํ ์ฑ๋ฅ ํฅ์์ ์ ๊ณตํ ์ ์์ต๋๋ค.
์ปฌ๋ง์ ์ฒ๋ฆฌํด์ผ ํ ์ผ๊ฐํ์ ์๋ฅผ ํฌ๊ฒ ์ค์ฌ ํนํ ๋ณต์กํ ์ฅ๋ฉด์์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์์: 1์ธ์นญ ์ํ ๊ฒ์์์ ๋ฒฝ์ด๋ ๊ฑด๋ฌผ ๋ค์ ์๋ ๊ฐ์ฒด๋ ๋ ๋๋ง๋์ง ์์ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
์ธ์คํด์ฑ(Instancing)
์ธ์คํด์ฑ์ ๋์ผํ 3D ๋ชจ๋ธ์ ์ฌ๋ฌ ์ธ์คํด์ค๋ฅผ ๋จ์ผ ๋๋ก์ฐ ์ฝ๋ก ๋ ๋๋งํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฒ์ ๋๋ค. ์ด๋ ์ค์๊ฐ ๊ทธ๋ํฝ์ค ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฃผ์ ๋ณ๋ชฉ ํ์์ด ๋ ์ ์๋ ๋๋ก์ฐ ์ฝ ์ค๋ฒํค๋๋ฅผ ํฌ๊ฒ ์ค์ผ ์ ์์ต๋๋ค.
์ธ์คํด์ฑ์ ๋๋ฌด, ํ, ํํฐํด๊ณผ ๊ฐ์ด ๋์ผํ๊ฑฐ๋ ์ ์ฌํ ๊ฐ์ฒด๋ฅผ ๋๋์ผ๋ก ๋ ๋๋งํ๋ ๋ฐ ํนํ ์ ์ฉํฉ๋๋ค.
์์: ์์ฒ ๊ทธ๋ฃจ์ ๋๋ฌด๊ฐ ์๋ ์ฒ์ ๋ ๋๋งํ๋ ๊ฒ์ ์ธ์คํด์ฑ์ ์ฌ์ฉํ์ฌ ํจ์จ์ ์ผ๋ก ์ํํ ์ ์์ผ๋ฉฐ, ๋จ์ผ ๋๋ฌด ๋ชจ๋ธ์ ๋ค๋ฅธ ์์น, ํ์ , ํฌ๊ธฐ๋ก ์ฌ๋ฌ ๋ฒ ๊ทธ๋ฆฝ๋๋ค.
ํ ์ค์ฒ ์ต์ ํ
ํ ์ค์ฒ๋ ์ค์๊ฐ ๊ทธ๋ํฝ์ค์ ์ค์ํ ๋ถ๋ถ์ด์ง๋ง, ์๋นํ ์์ ๋ฉ๋ชจ๋ฆฌ์ ๋์ญํญ์ ์๋นํ ์๋ ์์ต๋๋ค. ํ ์ค์ฒ๋ฅผ ์ต์ ํํ๋ฉด ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ค์ผ ์ ์์ต๋๋ค. ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ํ ์ค์ฒ ์ต์ ํ ๊ธฐ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ํ ์ค์ฒ ์์ถ: ํ ์ค์ฒ๋ฅผ ์์ถํ๋ฉด ํฌ๊ธฐ๊ฐ ์ค์ด๋ค์ด ๋ฉ๋ชจ๋ฆฌ์ ๋์ญํญ์ ์ ์ฝํ ์ ์์ต๋๋ค. DXT(DirectX Texture Compression) ๋ฐ ETC(Ericsson Texture Compression)์ ๊ฐ์ ์ฌ๋ฌ ํ ์ค์ฒ ์์ถ ํ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ถ ํ์์ ์ ํ์ ๋์ ํ๋ซํผ๊ณผ ์ํ๋ ํ์ง์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
- ๋ฐ๋งคํ(Mipmapping): ๋ฐ๋งคํ์ ๋ค์ํ ํด์๋์ ํ ์ค์ฒ ๋ฒ์ ์ ์ฌ๋ฌ ๊ฐ ๋ง๋๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ํ ์ค์ฒ๊ฐ ๋ฉ๋ฆฌ์ ๋ ๋๋ง๋ ๋ ๋ ๋ฎ์ ํด์๋์ ๋ฐ๋งต ๋ ๋ฒจ์ด ์ฌ์ฉ๋์ด ์ํ๋งํด์ผ ํ๋ ํ ์ค์ฒ ๋ฐ์ดํฐ์ ์์ ์ค์ ๋๋ค.
- ํ ์ค์ฒ ์ํ๋ผ์ค: ์ฌ๋ฌ ๊ฐ์ ์์ ํ ์ค์ฒ๋ฅผ ํ๋์ ํฐ ํ ์ค์ฒ ์ํ๋ผ์ค๋ก ๊ฒฐํฉํ๋ฉด ํ ์ค์ฒ ์ ํ ํ์๋ฅผ ์ค์ฌ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์์: ๋ชจ๋ฐ์ผ ๊ฒ์์์ ์์ถ ํ ์ค์ฒ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฒ์์ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ์ค์ด๊ณ ๋ฉ๋ชจ๋ฆฌ์ ๋์ญํญ์ด ์ ํ๋ ๊ธฐ๊ธฐ์์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์ ฐ์ด๋ ์ต์ ํ
์ ฐ์ด๋๋ GPU์์ ์คํ๋๋ฉฐ ์ ์ ๋ฐ ํ๋๊ทธ๋จผํธ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ ํ๋ก๊ทธ๋จ์ ๋๋ค. ์ ฐ์ด๋๋ฅผ ์ต์ ํํ๋ฉด ํนํ ํ๋๊ทธ๋จผํธ ๋ฐ์ด๋ ์๋๋ฆฌ์ค์์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๋ช ๊ฐ์ง ์ ฐ์ด๋ ์ต์ ํ ๊ธฐ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋ช ๋ น์ด ์ ์ค์ด๊ธฐ: ์ ฐ์ด๋์ ๋ช ๋ น์ด ์๋ฅผ ์ต์ํํ๋ฉด ์คํ ์๊ฐ์ ์ค์ผ ์ ์์ต๋๋ค. ์ด๋ ์ ฐ์ด๋ ์ฝ๋๋ฅผ ๋จ์ํํ๊ณ , ๋ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉฐ, ๋ถํ์ํ ๊ณ์ฐ์ ํผํจ์ผ๋ก์จ ๋ฌ์ฑํ ์ ์์ต๋๋ค.
- ๋ ๋ฎ์ ์ ๋ฐ๋์ ๋ฐ์ดํฐ ํ์ ์ฌ์ฉ: ๋ฐ์ ๋ฐ๋ ๋ถ๋ ์์์ ์ซ์(fp16)์ ๊ฐ์ ๋ ๋ฎ์ ์ ๋ฐ๋์ ๋ฐ์ดํฐ ํ์ ์ ์ฌ์ฉํ๋ฉด ํนํ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ์ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ๋ถ๊ธฐ ํผํ๊ธฐ: ๋ถ๊ธฐ(if-else ๋ฌธ)๋ ๋ถ๊ธฐ๋ ์คํ ๊ฒฝ๋ก๋ก ์ด์ด์ง ์ ์์ผ๋ฏ๋ก GPU์์ ๋น์ฉ์ด ๋ง์ด ๋ค ์ ์์ต๋๋ค. ๋ถ๊ธฐ๋ฅผ ์ต์ํํ๊ฑฐ๋ ํ๋ ๋์ผ์ด์ ๊ณผ ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์์: ์กฐ๋ช ํจ๊ณผ๋ฅผ ๊ณ์ฐํ๋ ์ ฐ์ด๋๋ฅผ ์ต์ ํํ๋ฉด ๋ณต์กํ ์กฐ๋ช ์ด ์๋ ๊ฒ์์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
ํ๋ซํผ๋ณ ์ต์ ํ
ํ๋ซํผ๋ง๋ค ํ๋์จ์ด ๋ฐ ์ํํธ์จ์ด ํน์ฑ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ค์๊ฐ ๊ทธ๋ํฝ์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ๊ฐ ํ๋ซํผ์์ ์ต์ ์ ์ฑ๋ฅ์ ๋ฌ์ฑํ๊ธฐ ์ํด์๋ ํ๋ซํผ๋ณ ์ต์ ํ๊ฐ ์ค์ํฉ๋๋ค.
๋ฐ์คํฌํฑ (Windows, macOS, Linux)
๋ฐ์คํฌํฑ ํ๋ซํผ์ ์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ๋ณด๋ค ๋ ๊ฐ๋ ฅํ GPU์ CPU๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง, ๋ ๋์ ํด์๋์ ๋์คํ๋ ์ด์ ๋ ๊น๋ค๋ก์ด ์ํฌ๋ก๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ฐ์คํฌํฑ ํ๋ซํผ์ ์ํ ๋ช ๊ฐ์ง ์ต์ ํ ๊ธฐ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- API ์ ํ: ์ฌ๋ฐ๋ฅธ ๋ ๋๋ง API(DirectX, Vulkan, OpenGL)๋ฅผ ์ ํํ๋ ๊ฒ์ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. Vulkan๊ณผ DirectX 12๋ GPU์ ๋ํ ๋ ๋ฎ์ ์์ค์ ์ก์ธ์ค๋ฅผ ์ ๊ณตํ์ฌ ๋ฆฌ์์ค ๊ด๋ฆฌ ๋ฐ ๋๊ธฐํ์ ๋ํ ๋ ๋ง์ ์ ์ด๋ฅผ ํ์ฉํฉ๋๋ค.
- ๋ฉํฐ์ค๋ ๋ฉ: ๋ฉํฐ์ค๋ ๋ฉ์ ํ์ฉํ์ฌ ์ฅ๋ฉด ๊ด๋ฆฌ ๋ฐ ๋ฌผ๋ฆฌ์ ๊ฐ์ CPU ์ง์ฝ์ ์ธ ์์ ์ ์คํ๋ก๋ํ๋ฉด ์ฑ๋ฅ๊ณผ ๋ฐ์์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ์ ฐ์ด๋ ๋ชจ๋ธ: ์ต์ ์ ฐ์ด๋ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ฉด ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ์ต์ ํ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
๋ชจ๋ฐ์ผ (iOS, Android)
๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ๋ ๋ฐฐํฐ๋ฆฌ ์๋ช ๊ณผ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ด ์ ํ๋์ด ์์ด ์ฑ๋ฅ ์ต์ ํ๊ฐ ๋์ฑ ์ค์ํฉ๋๋ค. ๋ชจ๋ฐ์ผ ํ๋ซํผ์ ์ํ ๋ช ๊ฐ์ง ์ต์ ํ ๊ธฐ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ ์ ๊ด๋ฆฌ: ์ ๋ ฅ ์๋น๋ฅผ ์ต์ํํ๋๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํํ๋ฉด ๋ฐฐํฐ๋ฆฌ ์๋ช ์ ์ฐ์ฅํ๊ณ ๊ณผ์ด์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ: ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ํ๋์ด ์์ผ๋ฏ๋ก ์ ์คํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ์ค์ํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ํผํ๊ณ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- API ์ ํ: OpenGL ES๋ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ ๋๋ง API์ด์ง๋ง, ๋ ๋์ ์ฑ๋ฅ๊ณผ ๋ฎ์ ์ค๋ฒํค๋๋ฅผ ์ ๊ณตํ๋ Vulkan์ด ์ ์ ๋ ์ธ๊ธฐ๋ฅผ ์ป๊ณ ์์ต๋๋ค.
- ์ ์ํ ํด์๋ ์ค์ผ์ผ๋ง: ๊ธฐ๊ธฐ์ ์ฑ๋ฅ์ ๋ฐ๋ผ ๋ ๋๋ง ํด์๋๋ฅผ ๋์ ์ผ๋ก ์กฐ์ ํ๋ฉด ๋ถ๋๋ฌ์ด ํ๋ ์ ์๋๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.
์น (WebAssembly/WebGL)
์น ๊ธฐ๋ฐ ๊ทธ๋ํฝ์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋์จ์ด์ ๋ํ ์ ํ๋ ์ก์ธ์ค ๋ฐ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์ ์คํ๋์ด์ผ ํ๋ ํ์์ฑ๊ณผ ๊ฐ์ ๊ณ ์ ํ ๊ณผ์ ์ ์ง๋ฉดํฉ๋๋ค. ์น ํ๋ซํผ์ ์ํ ๋ช ๊ฐ์ง ์ต์ ํ ๊ธฐ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- WebAssembly: WebAssembly๋ฅผ ์ฌ์ฉํ๋ฉด JavaScript์ ๋นํด ๊ณ์ฐ ์ง์ฝ์ ์ธ ์์ ์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- WebGL: WebGL์ ์น ๋ธ๋ผ์ฐ์ ์ ํ์ค ๋ ๋๋ง API์ด์ง๋ง, DirectX ๋ฐ Vulkan๊ณผ ๊ฐ์ ๋ค์ดํฐ๋ธ API์ ๋นํด ๋ช ๊ฐ์ง ์ ํ ์ฌํญ์ด ์์ต๋๋ค.
- ์ฝ๋ ์ต์ ํ: JavaScript ์ฝ๋๋ฅผ ์ต์ ํํ๋ฉด ํนํ WebAssembly์ ์ ํฉํ์ง ์์ ์์ ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ์์ ์ต์ ํ: ํ ์ค์ฒ ๋ฐ ๋ชจ๋ธ๊ณผ ๊ฐ์ ์์ ์ ์ต์ ํํ๋ฉด ๋ค์ด๋ก๋ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ๋ก๋ฉ ์๊ฐ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
๊ณ ๊ธ ๊ธฐ๋ฒ
์ผ๋ฐ ๋ฐ ํ๋ซํผ๋ณ ๊ธฐ๋ฒ ์ธ์๋, ์ถ๊ฐ์ ์ธ ์ฑ๋ฅ ํฅ์์ ์ํด ์ฌ๋ฌ ๊ณ ๊ธ ์ต์ ํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ปดํจํธ ์ ฐ์ด๋(Compute Shaders)
์ปดํจํธ ์ ฐ์ด๋๋ GPU์์ ์คํ๋๋ฉฐ ๋ฒ์ฉ ๊ณ์ฐ์ ์ํํ๋ ํ๋ก๊ทธ๋จ์ ๋๋ค. ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์ , AI ๊ณ์ฐ, ํ์ฒ๋ฆฌ ํจ๊ณผ์ ๊ฐ์ CPU ์ง์ฝ์ ์ธ ์์ ์ GPU๋ก ์คํ๋ก๋ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ปดํจํธ ์ ฐ์ด๋๋ฅผ ์ฌ์ฉํ๋ฉด ํนํ CPU ๋ฐ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๋ ์ด ํธ๋ ์ด์ฑ(Ray Tracing)
๋ ์ด ํธ๋ ์ด์ฑ์ ๊ด์ ์ ๊ฒฝ๋ก๋ฅผ ์๋ฎฌ๋ ์ด์ ํ์ฌ ๋ ์ฌ์ค์ ์ธ ์ด๋ฏธ์ง๋ฅผ ๋ง๋๋ ๋ ๋๋ง ๊ธฐ๋ฒ์ ๋๋ค. ๋ ์ด ํธ๋ ์ด์ฑ์ ๊ณ์ฐ ๋น์ฉ์ด ๋ง์ด ๋ค์ง๋ง, ๋๋ผ์ด ์๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด๋ผ ์ ์์ต๋๋ค.
์ต์ GPU์์ ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋์จ์ด ๊ฐ์ ๋ ์ด ํธ๋ ์ด์ฑ์ ๋ ์ด ํธ๋ ์ด์ฑ ๋ ๋๋ง์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๊ฐ๋ณ ๋ ์ดํธ ์ ฐ์ด๋ฉ(VRS)
๊ฐ๋ณ ๋ ์ดํธ ์ ฐ์ด๋ฉ(VRS)์ GPU๊ฐ ํ๋ฉด์ ๋ค๋ฅธ ๋ถ๋ถ์ ๊ฑธ์ณ ์ ฐ์ด๋ฉ ๋ ์ดํธ๋ฅผ ๋ณ๊ฒฝํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฒ์ ๋๋ค. ์ด๋ ์ด์ ์ด ๋ง์ง ์๊ฑฐ๋ ์์ง์ด๋ ์์ญ๊ณผ ๊ฐ์ด ๋ณด๋ ์ฌ๋์๊ฒ ๋ ์ค์ํ ์์ญ์ ์ ฐ์ด๋ฉ ๋ ์ดํธ๋ฅผ ์ค์ด๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
VRS๋ ์๊ฐ์ ํ์ง์ ํฐ ์ํฅ์ ์ฃผ์ง ์์ผ๋ฉด์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
์ค์๊ฐ ๊ทธ๋ํฝ์ค ์ฑ๋ฅ์ ์ต์ ํํ๋ ๊ฒ์ ๋งค๋ ฅ์ ์ด๊ณ ์๊ฐ์ ์ผ๋ก ์๋ฆ๋ค์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ๋ฐ ๋ณต์กํ์ง๋ง ํ์์ ์ธ ์์ ์ ๋๋ค. ๋ ๋๋ง ํ์ดํ๋ผ์ธ์ ์ดํดํ๊ณ , ํ๋กํ์ผ๋ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๋ชฉ ํ์์ ์๋ณํ๋ฉฐ, ์ ์ ํ ์ต์ ํ ๊ธฐ๋ฒ์ ์ ์ฉํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ๋ค์ํ ํ๋ซํผ๊ณผ ๊ธฐ๊ธฐ์์ ์๋นํ ์ฑ๋ฅ ํฅ์์ ์ด๋ฃฐ ์ ์์ต๋๋ค. ์ฑ๊ณต์ ์ด์ ๋ ์ผ๋ฐ์ ์ธ ์ต์ ํ ์์น, ํ๋ซํผ๋ณ ๊ณ ๋ ค ์ฌํญ, ๊ทธ๋ฆฌ๊ณ ๊ณ ๊ธ ๋ ๋๋ง ๊ธฐ๋ฒ์ ์ง๋ฅ์ ์ธ ์ ์ฉ์ ์กฐํฉ์ ์์ต๋๋ค. ํน์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋์ ํ๋ซํผ์์ ์ค์ ๋ก ์ฑ๋ฅ์ด ํฅ์๋๋์ง ํ์ธํ๊ธฐ ์ํด ํญ์ ์ต์ ํ๋ฅผ ํ๋กํ์ผ๋งํ๊ณ ํ ์คํธํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค. ํ์ด์ ๋น๋๋ค!